iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
自我挑戰組

前端開發 | 學習歷程系列 第 10

DAY 10 - CSS 變形、轉場以及動畫效果

  • 分享至 

  • xImage
  •  

大家好,我是一名菜鳥工程師,Chris,今天來到第 10 天, CSS 元素變形、轉場效果以及動畫效果

1 CSS 元素變形 : 使用transform屬性
可以對元素進行變形,以下是一些常見的函式用法

- 平移(位移): translate(x, y) 讓元素在水平和垂直方向移動,以下有幾種方式可以參考

移動水平方向 :

.element {
  transform: translateX(50px); /* 元素向右移動50像素 */
}

.element {
  transform: translateX(-20px); /* 元素向左移動20像素 */
}

移動垂直方向 :

.element {
  transform: translateY(30px); /* 元素向下移動30像素 */
}

.element {
  transform: translateY(-10px); /* 元素向上移動10像素 */
}

同時移動水平和垂直方向 :

.element {
  transform: translate(50px, 30px); /* 同時向右和向下移動元素 */
}

.element {
  transform: translate(-20px, -10px); /* 同時向左和向上移動元素 */
}

組合 translate 屬性 :

.element {
  transform: translateX(50px) translateY(30px); 
  /* 先向右移動50像素,然後向下移動30像素 */
}

- 旋轉: rotate(angle) 指定角度,讓元素旋轉

旋轉 45 度:

.element {
  transform: rotate(45deg);
}

- 縮放: scale(x, y) 讓元素能夠水平和垂直方向的縮放,以下有幾種方式可以參考

將元素放大1.5倍 :

.element {
  transform: scale(1.5);
}

水平方向縮小至50%,垂直方向放大至200% :

.element {
  transform: scaleX(0.5) scaleY(2);
}

- 傾斜: skew(x-angle, y-angle) 讓元素傾斜,並建立有趣的視覺效果,以下範例可以製作出菱形
HTML 設定 :

<div class="box"></div>

CSS 設定 :

.box {
  width: 200px;
  height: 200px;
  transform: skew(10deg);
  background-color: pink;
}

- 可以結合 scale 屬性與其他 transform 屬性一起使用,建立複雜的變形效果,以下為範例

.element {
  transform: translate(50px, 50px) scale(1.5);
  /* 同時平移且放大 */
}

2 CSS 轉場的效果 : 使用transition屬性
當元素的某些屬性變化時,建立有漸變的轉場效果,可以與偽元素(如 :hover)一起使用,以達到互動的效果

CSS transition 基本結構設定
- property: 指定要有轉場效果的屬性,如 color, width 等
- duration: 指定轉場的持續時間
- timing-function: 指定轉場的時間函數,例如 ease、linear、ease-in-out 等
- delay: 指定轉場開始前的延遲時間

transition屬性的基本結構:

.element {
  transition: property duration timing-function delay;
}

範例:

.box {
  width: 200px;
  height: 200px;
  background-color: pink;
}

.box:hover {
  width: 250px;
  transition: width 1s ease-in;
}

3 CSS 動畫的效果 : 使用animation屬性

CSS animation 基本結構設定

- name:動畫名稱,通常會使用 @keyframes 來定義動畫
- duration:動畫持續時間,以秒(s)或毫秒(ms)為單位
- timing-function 動畫的時間函數。常見的值包括 ease(默認值,緩慢開始,緩慢結束)、linear(均速)、ease-in(緩慢開始)、ease-out(緩慢結束)等
- delay:動畫開始前的延遲時間
- iteration-count:動畫的重複次數。可以是整數,也可以是 infinite(無限重複)
- direction:動畫的播放方向,可以是 normal(正向,默認值)、reverse(反向)、alternate(正向和反向交替)等
- fill-mode:動畫在非運行時間段內的行為。例如: forwards(保持最終狀態)、backwards(使用第一個關鍵幀的狀態)、both(同時應用 forwards 和 backwards)

animation 屬性的基本結構:

animation: name duration timing-function delay iteration-count direction fill-mode;

範例:

.element {
    width: 100px;
    height: 100px;
    background-color: blue;
    animation: myAnimation 3s ease-in-out 1s infinite alternate forwards;
}

/* 定義動畫 */
@keyframes myAnimation {
    0% {
        transform: scale(1);
    }
    100% {
        transform: scale(1.5);
        background-color: red;
    }
}

我建立一個名為 myAnimation 的動畫,動畫持續時間為3秒,使用 ease-in-out 時間函數,在1秒後開始,並無限次交替播放,最終狀態保持在:結束時的狀態

以上就是CSS 元素變形、轉場效果以及動畫效果的用法,我們也可以設定更複雜的動畫,製作出更具創意的效果

那我們明天見囉~~

預告:明天的主題是 CSS 變數!!!


上一篇
DAY 9 - RWD 響應式網頁
下一篇
DAY11 - CSS 變數和背景圖片
系列文
前端開發 | 學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言